package com.fau.fm.service;

import java.io.File;
import java.io.IOException;
import java.text.ParseException;
import java.util.List;
import java.util.Map;

import org.apache.poi.ss.usermodel.Workbook;

import com.fau.fm.entity.MedicalAdmin;
import com.fau.fm.entity.MedicalMedicine;
import com.fau.fm.entity.MedicalPerformanceSalary;
import com.fau.fm.util.Page;

/**
 * @desc 绩效薪资接口
 * @author dangjh
 * @datetime 2014年11月20日,上午11:48:01
 */
public interface IPerformanceSalManagerService {

	/**
	 * @desc 分页查询话务员绩效薪资
	 * @param type 字典表type
	 * @return Page
	 * @author liy
	 * @datetime 2014年11月18日,上午10:12:55
	 */
	public Page findCallEmployeeByPage(Map<String, Object> map, MedicalPerformanceSalary performance, MedicalAdmin admin);
	
	/**
	 * @desc 分页查询核单员绩效薪资
	 * @param type 字典表type
	 * @return Page
	 * @author liy
	 * @datetime 2014年11月18日,上午10:12:55
	 */
	public Page findNuclearEmployeeByPage(Map<String, Object> map, MedicalPerformanceSalary performance, MedicalAdmin admin);
	
	/**
	 * @desc 分页查询话务组长、核单组长绩效薪资
	 * @param type 字典表type
	 * @return Page
	 * @author liy
	 * @datetime 2014年11月18日,上午10:12:55
	 */
	public Page findGroupByPage(Map<String, Object> map, MedicalPerformanceSalary performance, MedicalAdmin admin);
	
	/**
	 * @desc 查询药品类别集合
	 * @param admin 当前用户
	 * @return
	 * @author dangjh
	 * @datetime 2014年11月11日,下午4:43:34
	 */
	public List<MedicalMedicine> findMedicineSortList(MedicalAdmin admin);
	
	/**
	 * @desc 保存绩效薪资信息
	 * @param proformance
	 * @return
	 * @author dangjh
	 * @datetime 2014年11月20日,下午5:23:31
	 */
	public boolean save(MedicalPerformanceSalary performance);
	
	/**
	 * @desc 保存编辑的绩效薪资信息
	 * @param proformance
	 * @return
	 * @author dangjh
	 * @datetime 2014年11月20日,下午5:25:59
	 */
	public boolean saveEdit(MedicalPerformanceSalary performance);
	
	/**
	 * @desc 删除绩效薪资信息
	 * @param proformance
	 * @author dangjh
	 * @datetime 2014年11月20日,下午5:26:53
	 */
	public void delete(MedicalPerformanceSalary performance);
	
	/**
	 * @desc 判断该产品对应的提成是否存在
	 * @param performance
	 * @return
	 * @author dangjh
	 * @datetime 2014年11月20日,下午8:34:57
	 */
	public boolean includeMedicine(MedicalPerformanceSalary performance, MedicalAdmin admin);
	
	/**
	 * @desc 查询员工工资列表
	 * @param map
	 * @param salary
	 * @return Page
	 * @author dangjh
	 * @throws ParseException 
	 * @datetime 2014年11月26日,下午12:21:25
	 */
	public Page findAllStaffSalary(Map<String, Object> map, MedicalPerformanceSalary salary) throws ParseException;
	
	/**
	 * @desc 生成员工工资信息
	 * @param salary
	 * @return boolean
	 * @author dangjh
	 * @datetime 2014年11月27日 上午11:41:51
	 */
	public boolean saveCalculatingSalaries(MedicalPerformanceSalary salary);
	
	/**
	 * @desc 导出已选择的员工薪资
	 * @param salary
	 * @return Workbook
	 * @throws IOException
	 * @author dangjh
	 * @datetime 2014年11月27日 上午11:42:27
	 */
	public Workbook exportSelected(MedicalPerformanceSalary salary) throws Exception;
	
	/**
	 * @desc 导出所有员工薪资
	 * @param salary
	 * @return Workbook
	 * @throws IOException
	 * @author dangjh
	 * @datetime 2014年11月27日 上午11:42:43
	 */
	public Workbook exportAll(MedicalPerformanceSalary salary) throws Exception;
	
	/**
	 * @desc 下载产品信息模板
	 * @return
	 * @throws Exception
	 * @author dangjh
	 * 2015年1月9日 下午2:47:23
	 */
	public Workbook downloadMedicine(MedicalAdmin admin) throws Exception;
	
	/**
	 * @desc 导入话务员绩效薪资
	 * @param admin
	 * @param file
	 * @throws Exception
	 * @author dangjh
	 * 2015年1月11日 上午10:08:44
	 */
	public void importCallSalary(MedicalAdmin admin, File file) throws Exception; 
	
}
